from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QVBoxLayout, QPushButton
import sys


class MyApp(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle('My PyQt App')
        self.setGeometry(100, 100, 200, 100)  # x, y, width, height
        layout = QVBoxLayout()  # 垂直布局管理器
        label = QLabel('Hello, PyQt!', self)  # 创建一个标签
        button = QPushButton('Click me', self)  # 创建一个按钮
        layout.addWidget(label)  # 将标签添加到布局中
        layout.addWidget(button)  # 将按钮添加到布局中
        self.setLayout(layout)  # 设置窗口布局为垂直布局管理器中的布局
        button.clicked.connect(self.on_click)  # 连接按钮点击事件到on_click方法

    def on_click(self):
        print("Button clicked!")  # 打印消息到控制台作为点击反馈


if __name__ == '__main__':
    app = QApplication(sys.argv)  # 创建QApplication实例
    ex = MyApp()  # 创建MyApp实例（即我们的应用）
    ex.show()  # 显示窗口
    sys.exit(app.exec_())  # 进入主事件循环，直到退出（例如关闭窗口）